﻿using System.Runtime.InteropServices;
using System.Drawing;
using System.Drawing.Imaging;

namespace LowLevelGraphics.Filter
{
    /// <summary>
    /// 
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct LambdaPixel
    {
        private Color _color;
        private int _x;
        private int _y;
        private UnsafeBitmap _sourceImage;
        private Rectangle _area;
        public LambdaPixel(Color color, int x, int y, UnsafeBitmap sourceImage, Rectangle area)
        {
            this._color = color;
            this._x = x;
            this._y = y;
            this._sourceImage = sourceImage;
            this._area = area;
        }

        /// <summary>
        /// Gets the color.
        /// </summary>
        /// <value>The color.</value>
        public Color Color
        {
            get
            {
                return this._color;
            }
        }

        /// <summary>
        /// Gets the X.
        /// </summary>
        /// <value>The X.</value>
        public int X
        {
            get
            {
                return this._x;
            }
        }

        /// <summary>
        /// Gets the Y.
        /// </summary>
        /// <value>The Y.</value>
        public int Y
        {
            get
            {
                return this._y;
            }
        }

        /// <summary>
        /// Gets the source image.
        /// </summary>
        /// <value>The source image.</value>
        public UnsafeBitmap SourceImage
        {
            get
            {
                return this._sourceImage;
            }
        }

        /// <summary>
        /// Gets the area.
        /// </summary>
        /// <value>The area.</value>
        public Rectangle Area
        {
            get
            {
                return this._area;
            }
        }
    }
}